查看原文
其他

深度学习三人行(第13期)----初识循环神经网络(RNN)

左右Shawn 智能算法 2021-09-10

前段时间,一直在项目中玩CNN,学到了不少,也理解了不少,包括各种经典的CNN网络框架以及改进,然而,RNN的学习并没有项目驱动,这也是为什么搁置了一段时间的原因,但是RNN作为深度学习知识系统的一个重要组成部分,肯定是要学习的。

截至上期,我们一起学习了深度学习中卷积神经网络的相关知识,

深度学习三人行(第12期)----CNN经典网络之ResNet

从这一期开始,我们一层一层的揭开RNN神秘面纱,学习的路上我们多多交流,共同进步。本期主要内容如下:

  • 为什么玩RNN?

  • RNN之循环神经元

前面说了,RNN作为深度学习知识系统中的重要组成部分,不了解RNN,就不能说熟悉深度学习。机器学习的两大主要任务:分类和回归,CNN主要用于图像分类,然而RNN主要用来时序信号的预测。



一. 为什么玩RNN?

我们都知道,在踢足球的时候,球踢出去之后,运动员们就朝着球即将着落的地方去跑,并根据球的运动方向实时更新,最终抢到球。其实这就是一个预测,预测时时发生,有时候朋友一句话还没说完,我们就能领会到他的意思等等。前几期我们一直都是在学习图像的分类,那么像这样的预测,就是这次RNN要完成的事情。RNN是一类可以搞数据回归的网络结构,比方说可以用RNN进行股票趋势分析,通过分析结果来预测股票何时该买,何时该卖。在自动驾驶技术中,可以用来预测行车轨迹以及避免事故。一般来说,RNN可以在任意长度的序列信号上工作,而不是像之前介绍的网络一样,只能在固定size的信号上工作。比方说,我们可以将文本,音频,语句等样本作为输入,这在自然语言处理(NLP)系统上极为有用,比如自动翻译系统,语音识别,语义分析等。

另外,RNN的预测能力还能够是它有创作的能力,可以使它能进行旋律预测,进而弹出预测出的曲子。还有一些,比如语句生成,图像标题生成等等。虽然创作肯定没有莎士比亚或者莫扎特那么牛,但是谁知道几年之后会是什么样子呢?

接下来的几期中,我们会逐步介绍RNN的基本概念组成,面临的主要问题(梯度消失和梯度爆炸)以及其解决办法,接着将会实战RNN,最终将一起学习下自动翻译系统的构成。



二. RNN之循环神经元

到目前为止,我们学习的大部分网络数据流都是向一个方向流动,即,从输入层流向输出层。其实循环神经网络除了有向后连接之外其他地方和之前学的很像。我们一起看一个简单的RNN,仅仅包含一个神经元,该神经元接受一个输入x,产生一个输出y,然后又将输出作为输入传入到该神经元,如下左图:

上右图中,每一个神经元的输入为当前时间的输入x(t)和前一个时间的输出y(t-1),随着时间轴依次展开如上右图。

通过上面的了解,我们可以很简单的创建一个循环神经元层,在每一个时间t,每一个神经元的输入为当前输入x(t)和前一个时间t-1时的输出y(t-1),如下图:

每一个神经元都有两组权重,一组是x(t)的,另外一组是上一个时间的输出y(t-1)的。把这两组权重设为Wx和Wy。那么一个简单的循环神经元的输出就很简单了,如下式:

其中,b是偏置项,φ为激活函数,如ReLU。

像之前的网络一样,我们可以把一batch的样本加入进去,计算在某时间上一整个RNN层的输出,如下:

其中,

Y(t)是一个m x n_n的矩阵,m为batch中样本的个数,n_n为神经元的个数,该矩阵的元素为某个样本在某个神经元上时间t的输出。

X(t)是一个m x n_i的矩阵,m为batch中样本的个数,n_i为输入特征的个数。

Wx是一个n_i x n_n的当前时间t的输入x(t)的权重矩阵。

Wy是一个n_n x n_n的前一时间t-1的输出y(t-1)的权重矩阵。

b是每一个神经元的偏置项。

如此,我们知道Y(t)是一个关于X(t)和Y(t-1)的函数,而Y(t-1)是X(t-1)和Y(t-2)的函数,依次类推直到时间t=0,在该时刻没有输入,一般假设输入为0.



三. 小结

今天,我们一起学习了为什么要学习循环神经网络以及循环神经网络的神经元组成,希望本期的知识能够对我们有所帮助,在学习的路上,我们共同进步,多谢有你。

(如需更好的了解相关知识,欢迎加入智能算法社区,在“智能算法”公众号发送“社区”,即可加入算法微信群和QQ群)


: . Video Mini Program Like ,轻点两下取消赞 Wow ,轻点两下取消在看

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存